package com.neusoft.classch7;

import java.util.Random;
import java.util.Scanner;

/*-
 * indent
 * 3、设计三个类，分别如下：（知识点：抽象类及抽象方法） [必做题]
 * 3.1 设计Shape表示图形类，有面积属性area、周长属性per，颜色属性color，
 * 有两个构造方法（一个是默认的、一个是为颜色赋值的），
 * 还有3个抽象方法，分别是：getArea计算面积、getPer计算周长、showAll输出所有信息，
 * 还有一个求颜色的方法getColor。
 * 
 * 3.2 设计 2个子类：
 * 3.2.1  Rectangle表示矩形类，增加两个属性，Width表示长度、height表示宽度，
 * 重写getPer、getArea和showAll三个方法，
 * 另外又增加一个构造方法（一个是默认的、一个是为高度、宽度、颜色赋值的）。
 * 
 * 3.2.2  Circle表示圆类，增加1个属性，radius表示半径，
 * 重写getPer、getArea和showAll三个方法，
 * 另外又增加两个构造方法（为半径、颜色赋值的）。
 * 3.3  在main方法中，声明创建每个子类的对象，并调用2个子类的showAll方法。
 *
 */
public class TestShape {

	public static void main(String[] args) {

		test02();

	}

	private static void test02() {
		// 随机数
		Random random = new Random();

		// 创建scanner实例
		Scanner sc0 = new Scanner(System.in);
		// 定义要创建数组的大小
		System.out.println("需要输入多少个元素");
		int num =sc0.nextInt();
		// 创建shape数组
		Shape[] shape = new Shape[num];
		// 矩形的长
		double length;
		// 矩形的宽
		double width;
		// 圆形的半径
		double radius;

		// 填充元素
		for (int i = 0; i < shape.length; i++) {
			System.out.println("创建第" + (i + 1) + "个元素：");
			if (random.nextInt(2) == 0) {
				System.out.println("输入矩形的长：");
				length = sc0.nextDouble();
				System.out.println("输入矩形的宽：");
				width = sc0.nextDouble();
				shape[i] = new Rectangle(length, width);

			} else {
				System.out.println("输入圆形的半径：");
				radius = sc0.nextDouble();
				shape[i] = new Circle(radius);

			}
		}

		// 输出数组元素
		for (int i = 0; i < shape.length; i++) {
			shape[i].showAll();
		}
	}

	// test shape

	private static void test01() {
		// 新建一个矩形对象
		Rectangle rec1 = new Rectangle(20, 30);
		rec1.showAll();

		// 新建一个圆形对象
		Circle circle1 = new Circle(15);
		circle1.showAll();
	}

}
